// 路由守卫拦截 全局前置守卫
// import { type RouteLocationNormalized } from 'vue-router'
// @ts-expect-error nprogress
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'
import router from '@/router'
import { useUserStore } from '@/stores/modules/user'

// 路由是否存在
// function isRoute(to: RouteLocationNormalized) {
//   return router.getRoutes().filter((item) => item.path === to.path).length > 0
// }
// 前置路由守卫钩子
router.beforeEach((to, from, next) => {
  // 这里不写next参数就可以不执行next()方法，直接返回路由对象
  const userStore = useUserStore()
  // 显示全屏页面加载进度条
  nprogress.start()
  // 没有登录 强制登录页
  if (to.path !== '/login' && !userStore.token) {
    return next({ name: 'login' })
  }
  // 已登录 防止重复登录
  if (userStore.token && to.path == '/login') {
    return next({ path: from.path })
  }
  // 页面错误
  // if (!isRoute(to)) {
  //   ElMessage.error('没有找到此页面')
  // return next({ name: '404' })
  // history.back() // 回到原来的页面
  // router.go(-1)
  // }

  // 根据路由中的meta 动态 设置页面标题
  const title = (to.meta.title ? to.meta.title : '') + ' 后台管理系统'
  document.title = title

  next()
})

//  后置路由守卫钩子
router.afterEach((to, from) => {
  // 隐藏全屏页面加载进度条
  nprogress.done()
})
